package com.example.demo.java;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
import java.util.Scanner;

public class JavaTest {

    public static void main(String[] args) {

        jmx();
    }

    /**
     * JMX 来看⼀下⼀个普通的 Java 程序有哪些线程
     */
    public static void jmx() {
        // 获取 Java 线程管理 MXBean
        ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
        // 不需要获取同步的 monitor 和 synchronizer 信息，仅获取线程和线程堆栈信息
        ThreadInfo[] threadInfos = threadMXBean.dumpAllThreads(false,
                false);
        // 遍历线程信息，仅打印线程 ID 和线程名称信息
        for (ThreadInfo threadInfo : threadInfos) {
            System.out.println("[" + threadInfo.getThreadId() + "] " +
                    threadInfo.getThreadName());
        }
    }

    /**
     * 获取用户键盘输入常用的两种方式
     */
    public static void inputMethod1() {
        // 方法1：通过Scanner
        Scanner input1 = new Scanner(System.in);
        String s = input1.nextLine();
        input1.close();
    }

    public static void inputMethod2() throws IOException {
        // 方法2：通过BufferedReader
        BufferedReader input2 = new BufferedReader(new InputStreamReader(System.in));
        String xx = input2.readLine();
    }

}
